﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ANZ_AIM_GUI.Utils
{
    public class Constant
    {
        //System Message
        public const string SYS_MSG_LOGIN_OK = "Log in successfully";
        public const string SYS_MSG_LOGIN_FAILED = "Failed when loggin in";
        public const string SYS_MSG_INCORRECT_USR_PASS = "User name or password is incorrect.";
        public const string SYS_MSG_USR_INACTIVE = "You are inactive, please contact admin to active your Account.";
        public const string SYS_MSG_USR_LOCKED_CONTACT_ADMIN = "User is locked.\nPlease contact administrator.";
        public const string SYS_MSG_USR_LOCKED_TIME = "You have logged in failed 3 times.\nPlease wait 30 seconds to log in again.";

        public const string SYS_MSG_MUST_CHANGE_PASSWORD = "You must change your password in ";
        public const string SYS_MSG_SAVE_FILE_SUCCESS = "File saved successfully";
        public const string SYS_MSG_VALID_ALL_REQUIRED = "All fields are required.";
        public const string SYS_MSG_INVALID_DATE_FORMAT = "Invalid date format (dd/mm/yyyy)";
        public const string SYS_MSG_INVALID_NUMBER = "Invalid number";
        public const string SYS_MSG_INVALID_VALUE = "Invalid value";
        public const string SYS_MSG_EDIT_RECOVERY = "Edit Recovery";
        public const string SYS_MSG_EDIT_NOTES = "Edit Notes";
        public const string SYS_MSG_ENTER_NEW_NOTES = "Enter new Notes";
        public const string SYS_MSG_ENTER_VALUE_FOR_RECOVERY = "Enter value for Recovery";
        public const string SYS_MSG_CANCEL_PROCESS_BEFORE_CLOSE = "Please cancel the process before closing.";
        public const string SYS_MSG_REPORT_AVAILABLE_FOR_PAST_DATE = "Report is only available for past working dates.";
        public const string SYS_MSG_INVALID_DATE_RANGE = "Invalid date range";
        public const string SYS_MSG_EMPTY_OUTPUT_FILE = "Empty output file";
        public const string SYS_MSG_INVALID_OS_DAYS = "Invalid OS days";
        public const string SYS_MSG_SCREEN_OR_OUTPUT_FILE_MUST_SELECT = "Either view on screen or output to file must be selected.";
        public const string SYS_MSG_OUTPUT_FILE_CAN_NOT_EMPTY = "Output file cannot be empty.";
        public const string SYS_MSG_OUTPUT_FOLDER_CAN_NOT_EMPTY = "Output folder cannot be empty.";
        public const string SYS_MSG_UPLOAD_FILE_CAN_NOT_EMPTY = "Upload file cannot be empty.";
        public const string SYS_MSG_PROMISE_DATE_GREATER_EQUAL_TODAY = "Promise date must be greater than or equal to today.";
        public const string SYS_MSG_REQUEUE_DATE_GREATER_EQUAL_TODAY = "Requeue date must be greater than or equal to today.";
        public const string SYS_MSG_DIARY_ADDED = "Diary added.";
        public const string SYS_MSG_DIARY_SAVED = "Diary saved.";
        public const string SYS_MSG_DIARY_ACTION_CODE_NOT_NULL = "You must select one action code";
        public const string SYS_MSG_DIARY_PAYMENT_METHOD_NOT_NULL = "You must select one payment method";
        public const string SYS_MSG_DIARY_REASON_CODE_NOT_NULL = "You must select one reason code";
        public const string SYS_MSG_NEW_HOLIDAY_ADDED = "New holiday added.";
        public const string SYS_MSG_HOLIDAY_SAVED = "Holiday saved.";
        public const string SYS_MSG_HOLIDAY_EXIST = "Holiday already exists.";
        public const string SYS_MSG_HOLIDAY_UPDATE = "Holiday updated.";
        public const string SYS_MSG_HOLIDAY_NAME_CAN_NOT_EMPTY = "Holiday name cannot be empty.";
        public const string SYS_MSG_TEMPLATE_MUST_SELECTED = "A template must be selected.";
        public const string SYS_MSG_EMPTY_LOAN_ACCOUNT = "Empty loan account";
        public const string SYS_MSG_INVALID_OUTPUT_PATH = "Empty or invalid output path";
        public const string SYS_MSG_DELETE_REPAYMENT = "Delete repayment";
        public const string SYS_MSG_REPAYMENT_DELETED = "Repayment deleted";
        public const string SYS_MSG_CONFIRM_DELETE_REPAYMENT = "Type OK to delete this repayment";
        public const string SYS_MSG_NOTHING_DONE = "Nothing done";
        public const string SYS_MSG_CASE_DELETED = "Case deleted";
        public const string SYS_MSG_DELETE_SOD = "Delete SOD";
        public const string SYS_MSG_CASE_REASSIGNED_SUCCESS = "Case reassigned successfully";
        public const string SYS_MSG_CONFIRM_DELETE_CASE = "Type OK to delete this case";
        public const string SYS_MSG_CONFIRM_DELETE_CASE_WITH_ALL_RELATED = "Type OK to delete this case and ALL related information";
        public const string SYS_MSG_DELETE_FOLLOWUP = "Delete Followup";
        public const string SYS_MSG_INVALID_SEARCH_CONDITION = "Please enter at least 1 criterion when searching for all working dates.";
        public const string SYS_MSG_MASTERDATA_NOTDEFINED = "Master data is not defined";
        public const string SYS_MSG_NOT_BUILD_DATA = "You must build data first";

        //System Status
        public const string SYS_ERROR = "Error";
        public const string SYS_WARNING = "Warning";
        public const string SYS_INFORMATION = "Information";
        public const string SYS_OPERATION_CANCELLED = "Operation Cancelled";
        public const string SYS_OPERATION_COMPLETED = "Operation Completed";
        public const string SYS_OPERATION_FAILED = "Operation Failed";

        public const string EXECUTION_DONE = "DONE";
        public const string EXECUTION_CANCELLED = "CANCELLED";

        //Status 
        public const string NEED_TO_UPDATE = "NEEDTOUPDATE"; //22Jan2015
        public const string NEED_TO_VERIFY = "NEEDTOVERIFY";
        public const string VERIFIED = "VERIFIED";
        public const string NEED_TO_APPROVE = "NEEDTOAPPROVE";
        public const string APPROVED = "APPROVED";
        public const string PENDING = "PENDING";
        public const string REJECTED = "REJECTED";
        public static Dictionary<string, string> vBatchStatusMap;
        public static Dictionary<string, string> BatchStatusMap
        {
            get
            {
                if (vBatchStatusMap == null)
                {
                    vBatchStatusMap = new Dictionary<string, string> 
                    { 
                        { "NEEDTOUPDATE", "NEED TO UPDATE" }
                        , { "NEEDTOVERIFY", "NEED TO VERIFY" }
                        , { "NEEDTOAPPROVE", "NEED TO APPROVE" } 
                    };
                }
                return vBatchStatusMap;
            }
        }

        public const string STATUS_DIS_COMPLETE = "Complete";
        public const string STATUS_DIS_INCOMPLETE = "InComplete";

        //FileUploadType
        public const string TYPE_SQM = "SQM";
        public const string TYPE_PIP = "PIP";
        public const string TYPE_PAYMENT = "PAYMENT";
        public const string TYPE_DIS = "DIS";
        public const string TYPE_MONTHLYAGENTLIST = "MONTHLYAGENTLIST";
        public const string TYPE_SALESPRODUCTIVITY = "SALESPRODUCTIVITY";
        public const string TYPE_ATTENDANCE = "ATTENDANCE";

        //Excel report sheet name
        public const string AGENT_CARDS_ACTIVATION_RATE = "Agent - Cards Activation Rate";
        public const string AGENT_CARDS = "Agent - Cards";
        public const string AGENT_PERSONAL_LOAN = "Agent - Personal Loan";
        public const string AGENT_LOC_SUPP_CARD = "Agent - LOC & Supp Card";
        public const string AGENT_FIELD_SALES = "Agent - Field Sales";
        public const string TEAMLEADER_CARDS = "Team Leader - Cards";
        public const string TEAMLEADER_FIELD_SALES = "Team Leader - Field Sales";
        public const string TEAMLEADER_PL = "Team Leader - PL";
        public const string TEAMLEADER_PORTFOLIO = "Team Leader - Portfolio";

        // User management
        public const string SYS_MSG_ADD_USER = "Add new user";
        public const string SYS_MSG_EDIT_USER = "Edit user";
        public const string SYS_MSG_DEL_USER = "Delete user";

        // Candidate
        public const string SYS_MSG_CANDIDATE_UPLOAD = "Upload candidates";
        public const string SYS_MSG_CANDIDATE_VERIFY = "Verify candidates";
        public const string SYS_MSG_CANDIDATE_APPROVE = "Approve candidates";
        public const string SYS_MSG_CANDIDATE_REJECT = "Reject candidates";
        public const string SYS_MSG_CANDIDATE_PENDING = "Pending candidates";

        // Sale
        public const string SYS_MSG_SALE_UPLOAD = "Upload sales";
        public const string SYS_MSG_SALE_VERIFY = "Verify sales";
        public const string SYS_MSG_SALE_APPROVE = "Approve sales";
        public const string SYS_MSG_SALE_REJECT = "Reject sales";
        public const string SYS_MSG_SALE_PENDING = "Pending sales";

        public const string SYS_MSG_EXIT_APP = "Do you want to exit AIM?";

        public const string SALE_EXPORT_SUCCESS = "All changes are ready to verify.";
        public const string SALE_NO_CHANGE = "We don't have any changes.\n Please add new changes!";

        // Upload file
        public const string EMPTY_FILE = "File name cannot be empty.";
        public const string IMPORT_WRONG_FILE = "The file imported is not right!";

        //Column map for BatchFileUpload table
        public static Dictionary<string, string> vBatchFileUploadTableMap;
        public static Dictionary<string, string> BatchFileUploadTableMap
        {
            get
            {
                if (vBatchFileUploadTableMap == null)
                {
                    vBatchFileUploadTableMap = new Dictionary<string, string> 
                    { 
                        { "BatchFileID", "Batch File ID" }
                        , { "FileName", "File Name" }
                        , { "TotalRecord", "Total Record" } 
                        , { "CreatedDate", "Created Date"}
                        , { "IsSentMail", "Is Sent Mail"}
                    };
                }
                return vBatchFileUploadTableMap;
            }
        }

        //Column map for Candidates table
        public static Dictionary<string, string> vCandidatesTableMap;
        public static Dictionary<string, string> CandidatesTableMap
        {
            get
            {
                if (vCandidatesTableMap == null)
                {
                    vCandidatesTableMap = new Dictionary<string, string> 
                    { 
                        { "CVCode", "CV Code" }
                        , { "Fullname_E", "Fullname_E" }
                        , { "Fullname_V", "Fullname_V" } 
                        , { "CellPhone", "Cell Phone"}
                        , { "DateOfBirth", "Date of birth"}
                        , { "IDNumber", "ID number"}
                        , { "IssuedDate", "Issued date"}
                        , { "IssuedPlace", "Issued place"}
                        , { "PermanentAddress", "Permanent address"}
                        , { "InterviewDate", "Interview date"}
                        , { "TrainingCallStatus", "Training call status"}
                        , { "TrainingCallStatusRemarks", "Training call status remarks"}
                        , { "CICSanctionDeliveryDate", "CIC sanction delivery date"}
                        , { "CICSanctionDelivererName", "CIC sanction deliverer name"}
                        , { "CICResult", "CIC result"}
                        , { "SanctionResult", "Sanction result"}
                        , { "PECCheckResult", "PEC check result"}
                        , { "PECRemarks", "PEC remarks"}
                        , { "TrainingBatch", "Training batch"}
                        , { "TrainingDate", "Training date"}
                        , { "TrainerName", "Trainer name"}
                        , { "TrainingAttendance", "Training attendance"}
                        , { "TrainingAttendanceRemarks", "Training attendance remarks"}
                        , { "RetestRequirement", "Retest requirement"}
                        , { "TrainingResult", "Training result"}
                        , { "OBEligible", "OB eligible"}
                        , { "DocumentCompletion", "Document completion"}
                        , { "DocumentIncompletionRemarks", "Document incompletion remarks"}
                        , { "PCReceiptSubmissionDate", "PC receipt submission date"}
                        , { "PCReportSubmissionDate", "PC report submission date"}
                        , { "HiringManagerName", "Hiring manager name"}
                        , { "HiringManagerAcknowledgeDate", "Hiring manager acknowledge date"}
                        , { "DelegateApproverName", "Delegate approver name"}
                        , { "ApprovingDate", "Approving date"}
                        , { "OnBoardingRemarks", "OnBoarding remarks"}
                        , { "CICSanctionRequestDate", "CIC sanction request date"}
                        , { "TrainingResultCC", "Training result CC"}
                        , { "CheckChannel", "Check channel"}
                        , { "BatchFileID", "Batch File ID"}
                        , { "ProductCategory", "Product category"}
                        , { "TeamLeaderCode", "Team leader code"}
                        , { "JoiningDate", "Joining date"}
                        , { "PromotionTransferDate", "Promotion transfer date"}
                        , { "FingerID", "Finger ID"}
                        , { "PersonalTaxCode", "Personal tax code"}
                        , { "ContractType", "Contract type"}
                        , { "ContractTerm", "Contract term"}
                        , { "ContractorName", "Contractor name"}
                        , { "ContractSignDate", "Contract sign date"}
                        , { "ContractExpiryDate", "Contract expiry date"}
                        , { "BankAccount", "Bank account"}
                        , { "BankBranchAddress", "Bank branch address"}
                        , { "BankName", "Bank name"}
                        , { "FillingRefCode", "Filling ref code"}
                        , { "ProfressiveTarget", "Profressive target"}
                    };
                }
                return vCandidatesTableMap;
            }
        }
    }
}
